package cn.me.alphamq.broker.util;

/**
 * 字节转换的工具类
 *
 * @author f
 */
public class ByteConvertUtil {

    /**
     * 将一个区间的 byte 数组转化成 int 值
     *
     * @param data byte 数组
     * @param start byte 数组的起始位置
     * @return
     */
    public static int rangeBytesToInt(byte[] data, int start) {
        return (data[start + 3] & 0xFF)
                | ((data[start + 2] & 0xFF) << 8)
                | ((data[start + 1] & 0xFF) << 16)
                | ((data[start] & 0xFF) << 24);
    }

    /**
     * 将 int 值转换成 4 个字节组成的字节数组
     *
     * @param value byte 数组
     * @return
     */
    public static byte[] intToBytes(int value) {
        return new byte[]{
                (byte) ((value >> 24) & 0xFF),
                (byte) ((value >> 16) & 0xFF),
                (byte) ((value >> 8) & 0xFF),
                (byte) (value & 0xFF)
        };
    }

    /**
     * 将 4 个字节组成的字节数组转换成 int 值
     *
     * @param value int 值
     * @return
     */
    public static int bytesToInt(byte[] value) {
        return (value[3] & 0xFF)
                | ((value[2] & 0xFF) << 8)
                | ((value[1] & 0xFF) << 16)
                | ((value[0] & 0xFF) << 24);
    }

}
